Dans le domaine des systèmes informatiques, concurrence au niveau de l'application c'est le chevauchement intentionnel des flux logiques de contrôle afin d'améliorer les performances et la réactivité. C'est une abstraction fonctionnelle : un programme est divisé en tâches indépendantes pouvant être intercalées ou exécutées en parallèle.
1. La taxonomie de la concurrence
Les développeurs choisissent généralement entre trois mécanismes fondamentaux pour gérer ces flux concurrents :
- Processus : Haute isolation avec espaces d'adressage séparés ; nécessite une communication interprocessus (IPC) mediée par le noyau.
- Multiplexage d'entrée/sortie : Un seul flux qui bascule manuellement entre les événements « prêts » (machines à états).
- Threads : Flux légers partageant un même espace d'adressage virtuel pour un échange de données facile.
2. Exécution logique versus physique
Bien que tous les programmes parallèles sont concurrents, tous les programmes concurrents ne sont pas parallèles. Le parallélisme est l'exécution physique des flux sur des cœurs matériels distincts. La concurrence est la conception logique qui permet une telle exécution.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>